#ifndef TECPLUGININTERFACE_H
#define TECPLUGININTERFACE_H

#include <QObject>
#include <QWidget>
#include <QByteArray>
#include <QByteArrayData>

#define DISABLE 0
#define ENABLE 1

#define TecControllerHMI_IDD "TecControllerHMI_idd"

class TecControllerHMI : public QWidget{
Q_OBJECT
public:
     ~TecControllerHMI() {}
     TecControllerHMI()  {}

     virtual QWidget* RegisiterUi() = 0;

     virtual void FastTimerLoop() = 0;
     virtual void SlowTimerLoop() = 0;

     virtual void onbtnclicked_ModeSelected(short Mode) = 0;

     virtual bool onbtnclicked_vPower() = 0;
     virtual bool onbtnclicked_ESTOP_Clicked() = 0;

     virtual void onbtnclicked_Setting() = 0;
     virtual void onbtnclicked_Edit() = 0;
     virtual void onbtnclicked_Pause() = 0;
     virtual void onbtnclicked_Run() = 0;
     virtual void onbtnclicked_Stop() = 0;

     virtual void onbtnclicked_fn1() = 0;
     virtual void onbtnclicked_fn2() = 0;
     virtual void onbtnclicked_fn3() = 0;
     virtual void onbtnclicked_fn4() = 0;

     virtual void onbtnpressed_fn1() = 0;
     virtual void onbtnpressed_fn2() = 0;
     virtual void onbtnpressed_fn3() = 0;
     virtual void onbtnpressed_fn4() = 0;

     virtual void onbtnreleased_fn1() = 0;
     virtual void onbtnreleased_fn2() = 0;
     virtual void onbtnreleased_fn3() = 0;
     virtual void onbtnreleased_fn4() = 0;

     virtual void onbtnclicked_Home() = 0;

     virtual void onbtnclicked_MainScriptStatus() = 0;
     virtual void onbtnclicked_SubScriptStatus() = 0;
     virtual void onbtnclicked_VisHmi() = 0;
     virtual void onbtnclicked_Coordinate(short& Coordinate,int& ToolId, int& WorkID) = 0;

     virtual void onbtnpressed_XP() = 0;
     virtual void onbtnpressed_YP() = 0;
     virtual void onbtnpressed_ZP() = 0;
     virtual void onbtnpressed_AP() = 0;
     virtual void onbtnpressed_BP() = 0;
     virtual void onbtnpressed_CP() = 0;
     virtual void onbtnpressed_XN() = 0;
     virtual void onbtnpressed_YN() = 0;
     virtual void onbtnpressed_ZN() = 0;
     virtual void onbtnpressed_AN() = 0;
     virtual void onbtnpressed_BN() = 0;
     virtual void onbtnpressed_CN() = 0;

     virtual void onbtnpressed_E1P() = 0;
     virtual void onbtnpressed_E2P() = 0;
     virtual void onbtnpressed_E1N() = 0;
     virtual void onbtnpressed_E2N() = 0;

     virtual void onbtnreleased_XP() = 0;
     virtual void onbtnreleased_YP() = 0;
     virtual void onbtnreleased_ZP() = 0;
     virtual void onbtnreleased_AP() = 0;
     virtual void onbtnreleased_BP() = 0;
     virtual void onbtnreleased_CP() = 0;
     virtual void onbtnreleased_XN() = 0;
     virtual void onbtnreleased_YN() = 0;
     virtual void onbtnreleased_ZN() = 0;
     virtual void onbtnreleased_AN() = 0;
     virtual void onbtnreleased_BN() = 0;
     virtual void onbtnreleased_CN() = 0;

     virtual void onbtnreleased_E1P() = 0;
     virtual void onbtnreleased_E2P() = 0;
     virtual void onbtnreleased_E1N() = 0;
     virtual void onbtnreleased_E2N() = 0;

     virtual void onbtnclicked_MannualOverrideP(double& value) = 0;
     virtual void onbtnclicked_ProgramOverrideP(double& value) = 0;
     virtual void onbtnclicked_MannualOverrideN(double& value) = 0;
     virtual void onbtnclicked_ProgramOverrideN(double& value) = 0;

     virtual void fromBackendMessageCommand(QByteArray Data) = 0;
     virtual void toBackendMessage(QByteArray& Data) = 0;
};

Q_DECLARE_INTERFACE(TecControllerHMI, TecControllerHMI_IDD)
#endif // PLUGININTERFACE_H
